# bonobo's description for medikit

from medikit import require

make = require('make')
pytest = require('pytest')
python = require('python')
sphinx = require('sphinx')

python.setup(
    name='bonobo',
    python_requires='>=3.5',
    description='Bonobo, a simple, modern and atomic extract-transform-load toolkit for python 3.5+.',
    license='Apache License, Version 2.0',
    url='https://www.bonobo-project.org/',
    download_url='https://github.com/python-bonobo/bonobo/tarball/{version}',
    author='Romain Dorgueil',
    author_email='romain@dorgueil.net',
    data_files=[
        (
            'share/jupyter/nbextensions/bonobo-jupyter', [
                'bonobo/contrib/jupyter/static/extension.js',
                'bonobo/contrib/jupyter/static/index.js',
                'bonobo/contrib/jupyter/static/index.js.map',
            ]
        ),
    ],
    entry_points={
        'console_scripts': [
            'bonobo = bonobo.commands:entrypoint',
        ],
        'bonobo.commands': [
            'convert = bonobo.commands.convert:ConvertCommand',
            'download = bonobo.commands.download:DownloadCommand',
            'examples = bonobo.commands.examples:ExamplesCommand',
            'init = bonobo.commands.init:InitCommand',
            'inspect = bonobo.commands.inspect:InspectCommand',
            'run = bonobo.commands.run:RunCommand',
            'version = bonobo.commands.version:VersionCommand',
        ],
    }
)

python.add_requirements(
    'cached-property ~=1.4',
    'fs ~=2.0',
    'graphviz >=0.8,<0.9',
    'jinja2 ~=2.9',
    'mondrian ~=0.8',
    'packaging ~=19.0',
    'psutil ~=5.4',
    'python-slugify ~=1.2.0',
    'requests ~=2.0',
    'stevedore ~=1.27',
    'whistle ~=1.0',
    dev=[
        'cookiecutter >=1.5,<1.6',
        'pytest-timeout >=1,<2',
        'sphinx-sitemap >=0.2,<0.3',
    ],
    docker=[
        'bonobo-docker ~=0.6.0a1',
    ],
    jupyter=[
        'ipywidgets ~=6.0',
        'jupyter ~=1.0',
    ],
    sqlalchemy=[
        'bonobo-sqlalchemy ~=0.6.0a1',
    ],
)


@listen(make.on_generate)
def on_make_generate(event):
    makefile = event.makefile
    
    # Sphinx
    makefile['SPHINX_AUTOBUILD'] = '$(PYTHON_DIRNAME)/sphinx-autobuild'
    makefile.add_target(
        'watch-$(SPHINX_SOURCEDIR)',
        '$(SPHINX_AUTOBUILD) $(SPHINX_SOURCEDIR) $(shell mktemp -d)',
        phony=True
    )

    # Formating
    makefile.add_target(
        'format',
        '''
            black -l 120 .
            isort -rc -o mondrian -o whistle -y .
        ''',
        phony=True,
        doc='Reformats the whole codebase using our standards (requires black and isort).'
    )





# vim: ft=python:
